/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"398040E3-5AFF-456E-889A-E5620E3D8232"}
 */
var $AUTHENTICATOR_NOMBRE_SERVIDOR = "pigeon_board";

/**
 * Función de Autenticación<br>Parámetros userName y password son obligatorios
 * 
 * @author Roberto J. Blasco
 * @version 1.0
 * @param {String} userName
 * @param {String} password
 * @return {String}
 *
 * @properties={typeid:24,uuid:"79F07265-3E7C-46B3-A090-64BBBBDB55F8"}
 */
function loginUser(userName, password){
	
	if (!(userName && password)){
        return null;
	}
	
	var authenticated = false;
	var arguments = [];
	arguments[arguments.length] = userName;
	arguments[arguments.length] = scopes.digest.md5Hex(password);
	
	var sql_query = "SELECT adm_t900_usuarios_id FROM adm_t900_usuarios WHERE s_descripcion = ? and s_md5_pwd = ?";
	var dataset = databaseManager.getDataSetByQuery($AUTHENTICATOR_NOMBRE_SERVIDOR, sql_query, arguments, -1);
	authenticated = (dataset.getMaxRowIndex() > 0 ? true : false);
	
	if (authenticated){
		var ok = security.login(userName, userName, ['Administrators']);
		if (ok){
			return dataset.getValue(1,1);
		}else{
			return null;
		}
	}
    return null;
}

/**
 * Comprueba si existe Usuario Super Administrador.<br/>Si no lo hay lo crea
 * @author Roberto J. Blasco
 * @version 1.0
 * @properties={typeid:24,uuid:"236EC8C7-01AF-41EF-9691-D635D4DA7C48"}
 * @AllowToRunInFind
 */
function checkADM(){
	
	// Si no hay Usuario Super Administrador es creado
	/** @type {JSFoundSet<db:/pigeon_board/adm_t900_usuarios>} */
	var fs_adm_t900_usuarios = databaseManager.getFoundSet($AUTHENTICATOR_NOMBRE_SERVIDOR,"adm_t900_usuarios");
	fs_adm_t900_usuarios.loadAllRecords();
	if (fs_adm_t900_usuarios.find()){
		fs_adm_t900_usuarios.b_es_adm = 1;
		fs_adm_t900_usuarios.search();
	}
	if (fs_adm_t900_usuarios.getSize() <= 0){
		fs_adm_t900_usuarios.newRecord();
		fs_adm_t900_usuarios.b_es_adm = 1;
		fs_adm_t900_usuarios.s_descripcion = "usuadm@adm.com";
		fs_adm_t900_usuarios.s_md5_pwd = scopes.digest.md5Hex("usuadm*01");
		databaseManager.saveData(fs_adm_t900_usuarios);
	}
}

/**
 * @author Roberto J. Blasco
 * @version 1.0
 * @param {String} userName
 * @param {String} password
 *
 * @properties={typeid:24,uuid:"5B59FA83-395A-4F80-8EA5-78FC93E27E47"}
 */
function loginUserAdm(userName, password){
	
	if (!(userName && password)){
        return null;
	}
	
	var authenticated = false;
	var arguments = [];
	arguments[arguments.length] = userName;
	arguments[arguments.length] = scopes.digest.md5Hex(password);
	var sql_query = "SELECT adm_t900_usuarios_id FROM adm_t900_usuarios WHERE s_descripcion = ? and s_md5_pwd = ?";
	var dataset = databaseManager.getDataSetByQuery($AUTHENTICATOR_NOMBRE_SERVIDOR, sql_query, arguments, -1);
	authenticated = (dataset.getMaxRowIndex() > 0 ? true : false);
	
	if (authenticated){
		var ok = security.login(userName, userName, ['Administrators']);
		if (ok){
			return dataset.getValue(1,1);
		}else{
			return null;
		}
	}
    return null;
}

/**
 * @author Roberto J. Blasco
 * @version 1.0
 * @param {String} userName
 * @return {Boolean}
 * @properties={typeid:24,uuid:"28743A58-CC27-40B3-9992-45C452EC13FB"}
 */
function getTenant(userName){
	
	if (!userName){
        return false;
	}
	
	var arguments = [];
	arguments[arguments.length] = userName;
	var sql_query = "SELECT adm_t900_usuarios_id FROM adm_t900_usuarios WHERE s_descripcion = ?";
	var dataset = databaseManager.getDataSetByQuery($AUTHENTICATOR_NOMBRE_SERVIDOR, sql_query, arguments, -1);
	
	var authenticated = (dataset.getMaxRowIndex() > 0 ? true : false);
	if (authenticated) return true;
	
    return false;
}
